\section{Arbre syntaxique}
Le choix de l'arbre a été fait pour simplifier l'analyse de type et la
génération des fonctions. En effet, il est possible de parcourir
certaines branches de l'arbre plusieurs fois. Nous verrons dans un
premier temps la structure de noeud utilisée, puis la génération de
l'arbre.

\subsection{Composition des noeuds}
Chaque noeud est composé d'un champ type qui le caractérise (ADD, MUL,
FOR, INT, FLOAT, ...). Un tableau lui permet de conserver les pointeur
sur les noeuds fils. Divers champs ont été ajoutés pour stocker les
informations nécessaire à la génération de code et l'analyse de
type. Par exemple, les champs type\_var, et reg sont respectivement
le type de la valeur du noeud et le registre dans lequel elle est
stockée, le champ code permettra de stocker le code et ainsi de le
faire remonter.


\subsection{Génération de l'arbre}

Durant l'analyse syntaxique, l'arbre est généré. Devant chaque règle
de la grammaire, une action a été ajoutée qui a pour but de créer le
noeud correspondant à la règle, de le relier à ses fils, et de stocker
si nécessaire des informations telles que la valeur de l'entier, ou
encore la chaîne de caractères de l'identifiant.  L'arbre n'a pas été
construit exactement selon les règles de la grammaire: par exemple, le
for a été divisé en un noeud while précédé par une affectation et dont
le corps est suivi d'une incrémentations. Une fois la génération de
l'arbre terminée l'analyse sémantique peut commencer.

%Pour la structure de contrôle for on ajoute à l'arbre un noeud while précédé par une affectation et dont le corps est suivi d'une incrémentation. 


 
%L'analyse syntaxique genère un arbre syntaxique dont chaque noeud peut être un identifiant, une affectation, une structure de controle, une comparaison ...
%L'analyse sémantique se basera sur cet arbre.
